import axios from 'axios';
import { getAccessToken,removeToken } from '@/utils/auth'
import router from "@/router";

// 封装axios工具而不是直接调发送请求，后端返回响应
// 可以方便后续统一拦截
const service = axios.create({
  // baseURL: 'https://mock.apifox.cn/m1/2428381-0-default/admin-api',
  baseURL: '/api',
  timeout: 20000
});

service.interceptors.request.use(
  config => {
    // 在请求发送之前对请求数据进行处理
    config.headers['Content-Type'] = 'application/json;charset=utf-8';
    if (getAccessToken()) {
      config.headers['Authorization'] = 'Bearer ' + getAccessToken() // 携带token
    }

    return config;
  },
  error => {
    // 对请求错误做些什么
    console.log(error);
    return Promise.reject(error);
  }
);

service.interceptors.response.use(
  response => {
    // 对响应数据进行处理
    // ...
    if (response.data.code === 401) {
      removeToken()
      router.push({ path: '/login' }) // 重定向到登录页面
    }
    return response.data;
  },
  error => {
    // 对响应错误做些什么
    console.log(error);
    return Promise.reject(error);
  }
);

// 创建了一个名为 service 的 axios 实例，并且使用 export default 导出了这个实例。因此，当您使用 import request from '@/utils/request' 时，您实际上是在导入这个 service 实例，并将其命名为 request。
export default service;
